# 学生选课管理系统 - 主Makefile
# CMO: 项目构建管理

# 编译器设置
CC = gcc
CFLAGS = -Wall -g -I./Include $(COMPILE_FLAGS)
LDFLAGS = -L./RELEASE

# 模块目录
MODULEA_DIR = ModuleA
MODULEB_DIR = ModuleB
MODULEC_DIR = ModuleC

# 目标文件
TARGET_FILE = student_system_file
TARGET_KEYBOARD = student_system_keyboard

# 默认目标
all: $(TARGET_FILE) $(TARGET_KEYBOARD)

# 文件版本目标
$(TARGET_FILE): main.o libstudent.a libcourse.a libfileio.a
	@echo "🔗 链接文件版本..."
	$(CC) -o ./RELEASE/$@ Main.o $(LDFLAGS) -lstudent -lcourse -lfileio
	@echo "✅ 文件版本构建完成: ./RELEASE/$@"

# 键盘版本目标  
$(TARGET_KEYBOARD): main.o libstudent.a libcourse.a libfileio.a
	@echo "🔗 链接键盘版本..."
	$(CC) -o ./RELEASE/$@ Main.o $(LDFLAGS) -lstudent -lcourse  -lfileio
	@echo "✅ 键盘版本构建完成: ./RELEASE/$@"

# 主程序编译
main.o: Main.c Main.h
	@echo "📝 编译主程序..."
	$(CC) $(CFLAGS) -c Main.c -o Main.o

# 编译学生管理模块
libstudent.a:
	@echo "👨‍🎓 编译学生管理模块..."
	$(MAKE) -C $(MODULEA_DIR)
	cp $(MODULEA_DIR)/libstudent.a ./RELEASE/
	@echo "✅ 学生模块构建完成"

# 编译课程管理模块
libcourse.a:
	@echo "📚 编译课程管理模块..."
	$(MAKE) -C $(MODULEB_DIR)
	cp $(MODULEB_DIR)/libcourse.a ./RELEASE/
	@echo "✅ 课程模块构建完成"

# 编译文件操作模块  
libfileio.a:
	@echo "📁 编译文件操作模块..."
	$(MAKE) -C $(MODULEC_DIR)
	cp $(MODULEC_DIR)/libfileio.a ./RELEASE/
	@echo "✅ 文件模块构建完成"

# 清理目标
clean:
	@echo "🧹 清理构建文件..."
	-$(MAKE) -C $(MODULEA_DIR) clean
	-$(MAKE) -C $(MODULEB_DIR) clean
	-$(MAKE) -C $(MODULEC_DIR) clean
	-rm -f *.o
	-rm -f ./RELEASE/*.a ./RELEASE/*.out ./RELEASE/*.so ./RELEASE/student_system_*
	@echo "✅ 清理完成"

# 安装系统依赖
install_deps:
	@echo "📥 安装系统依赖..."
	sudo apt-get update
	sudo apt-get install -y build-essential git
	@echo "✅ 依赖安装完成"

# 显示帮助信息
help:
	@echo "=========================================="
	@echo "  学生选课管理系统 - 构建帮助"
	@echo "=========================================="
	@echo "可用目标:"
	@echo "  make all              - 编译所有版本"
	@echo "  make student_system_file    - 编译文件版本"
	@echo "  make student_system_keyboard - 编译键盘版本"
	@echo "  make clean            - 清理构建文件"
	@echo "  make install_deps     - 安装系统依赖"
	@echo "  make help             - 显示此帮助"
	@echo ""
	@echo "快速编译:"
	@echo "  ./BUILD/build_all.sh        - 一键编译所有版本"
	@echo "  ./BUILD/Multiproduct/build_file_version.sh    - 编译文件版本"
	@echo "  ./BUILD/Multiproduct/build_keyboard_version.sh - 编译键盘版本"
	@echo ""

.PHONY: all clean install_deps help libstudent.a libcourse.a libfileio.a
